YES(O(1),O(1)) We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict Trs: { filter(cons(X), 0(), M) -> cons(0()) , filter(cons(X), s(N), M) -> cons(X) , sieve(cons(0())) -> cons(0()) , sieve(cons(s(N))) -> cons(s(N)) , nats(N) -> cons(N) , zprimes() -> sieve(nats(s(s(0())))) } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) We use the processor 'Small Polynomial Path Order (PS,1-bounded)' to orient following rules strictly. Trs: { filter(cons(X), 0(), M) -> cons(0()) , filter(cons(X), s(N), M) -> cons(X) , sieve(cons(0())) -> cons(0()) , sieve(cons(s(N))) -> cons(s(N)) , nats(N) -> cons(N) , zprimes() -> sieve(nats(s(s(0())))) } The induced complexity on above rules (modulo remaining rules) is YES(?,O(1)) . These rules are moved into the corresponding weak component(s). Sub-proof: ---------- The input was oriented with the instance of 'Small Polynomial Path Order (PS,1-bounded)' as induced by the safe mapping safe(filter) = {3}, safe(cons) = {1}, safe(0) = {}, safe(s) = {1}, safe(sieve) = {1}, safe(nats) = {1}, safe(zprimes) = {} and precedence filter > sieve, filter > nats, sieve > nats, zprimes > sieve, zprimes > nats, filter ~ zprimes . Following symbols are considered recursive: {} The recursion depth is 0. For your convenience, here are the satisfied ordering constraints: filter(cons(; X), 0(); M) > cons(; 0()) filter(cons(; X), s(; N); M) > cons(; X) sieve(; cons(; 0())) > cons(; 0()) sieve(; cons(; s(; N))) > cons(; s(; N)) nats(; N) > cons(; N) zprimes() > sieve(; nats(; s(; s(; 0())))) We return to the main proof. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak Trs: { filter(cons(X), 0(), M) -> cons(0()) , filter(cons(X), s(N), M) -> cons(X) , sieve(cons(0())) -> cons(0()) , sieve(cons(s(N))) -> cons(s(N)) , nats(N) -> cons(N) , zprimes() -> sieve(nats(s(s(0())))) } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded Hurray, we answered YES(O(1),O(1))